package wave.common.util;

import lombok.Data;

import java.util.*;

/**
 * @author 夕下风波
 * @date 2025-02-13 21:38
 * @description 通用工具类j
 * 与 Func 相同 除了没有 beanCopy
 */
@Data
public class CommonFunc {

    /**
     * 是否为空
     *
     * @param object 判空内容
     */
    public static Boolean isEmpty(Object object) {
        if (object == null) return true;
        if (object instanceof String)
            return ((String) object).isEmpty();
        if (object instanceof Collection)
            return ((Collection<?>) object).isEmpty();
        if (object instanceof Map)
            return ((Map<?, ?>) object).isEmpty();
        if (object instanceof Object[])
            return ((Object[]) object).length == 0;
        if (object instanceof int[])
            return ((int[]) object).length == 0;
        if (object instanceof long[])
            return ((long[]) object).length == 0;
        if (object instanceof float[])
            return ((float[]) object).length == 0;
        if (object instanceof double[])
            return ((double[]) object).length == 0;
        if (object instanceof boolean[])
            return ((boolean[]) object).length == 0;
        if (object instanceof char[])
            return ((char[]) object).length == 0;
        return false;
    }

    /**
     * 是否不为空
     *
     * @param object 判非空内容
     */
    public static Boolean isNotEmpty(Object object) {
        return !isEmpty(object);
    }

    /**
     * 判断字符是否为空
     *
     * @param str 字符
     */
    public static Boolean isBlank(String str) {
        return str.isBlank();
    }

    /**
     * 字符串转换为字符串集合
     *
     * @param str 字符串
     */
    public static List<String> strToStringList(String str) {
        if (isBlank(str)) return Collections.emptyList();
        return Arrays.stream(str.split(",")).toList();
    }

    /**
     * 字符串转换为Long集合
     *
     * @param str 字符串
     */
    public static List<Long> strToLongList(String str) {
        if (isBlank(str)) return Collections.emptyList();
        return Arrays.stream(str.split(",")).map(Long::parseLong).toList();
    }

    /**
     * 字符串是否存在
     *
     * @param sourceStr 源字符串
     * @param tarStr    比较字符串
     */
    public static boolean strContains(String sourceStr, String tarStr) {
        return sourceStr.contains(tarStr);
    }

    /**
     * 字符串是否不存在
     *
     * @param sourceStr 源字符串
     * @param tarStr    比较字符串
     */
    public static boolean strNotContains(String sourceStr, String tarStr) {
        return !strContains(sourceStr, tarStr);
    }


    /**
     * 判断字符是否非空
     *
     * @param str 字符
     */
    public static Boolean isNotBlank(String str) {
        return !str.isBlank();
    }

    /**
     * 判断是否为假
     *
     * @param condition 条件
     */
    public static Boolean isFalse(Boolean condition) {
        return !isTrue(condition);
    }

    /**
     * 判断是否为真
     *
     * @param condition 条件
     */
    public static Boolean isTrue(Boolean condition) {
        return condition;
    }

}
